package cn.bonoon.kernel.web.annotations;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * <pre>
 * 本注解主要是用于指定几个基本列表类型的数据的填充格式；
 * 基本列表数据类型包括：
 * {@link cn.bonoon.kernel.web.handlers.loader.ComboBoxAutoLoaderHandler ComboBoxAutoLoaderHandler}的{@link cn.bonoon.kernel.support.models.Item Item}数据类型
 * {@link cn.bonoon.kernel.web.handlers.loader.ComboTreeAjaxAutoLoaderHandler ComboTreeAjaxAutoLoaderHandler}的{@link cn.bonoon.kernel.support.models.AjaxNode AjaxNode}数据类型
 * {@link cn.bonoon.kernel.web.handlers.loader.ComboTreeAutoLoaderHandler ComboTreeAutoLoaderHandler}的{@link cn.bonoon.kernel.support.models.Node Node}数据类型
 * 例如：
 * 默认情况下{@link cn.bonoon.kernel.web.handlers.loader.ComboBoxAutoLoaderHandler ComboBoxAutoLoaderHandler}的实体{@link cn.bonoon.kernel.support.models.Item Item}的数据加载方式为
 * {@link cn.bonoon.kernel.support.models.Item new Item(x.id, x.name)}; 
 * 可以通过本注解，把{@link #value() @AutoDataResultFields(value = "x.id, x.compayName")}的方式
 * 改变数据的加载格式
 * <hr/>
 * 具体可定义的格式如下：
 * 1. {@link cn.bonoon.kernel.support.models.Item Item}类型接受的数据格式如："id,text"两个字段
 * 2. {@link cn.bonoon.kernel.support.models.AjaxNode AjaxNode}类型接受的数据格式如："id,text"两个字段，
 *     但会自动添加"size"字段，用来指定该节点下面包含的子节点数量，如果"size=0"则表示叶子节点
 * 3. {@link cn.bonoon.kernel.support.models.Node Node}类型接受的数据格式如："id,text"两个字段，
 *     但会自动添加"parentId"字段，用来生成树型的数据结构
 * </pre>
 * @author jackson
 *
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface AutoDataResultFields {
	String value();
}
